add an include to allow compile on mac
[supercollider.git] / README LINUX
blob167ba01b00b4ec78242a94eea4dd3243a49a95d6
1 -*-text-*---------------------------------------------------------------
2 supercollider 3 for linux
3 ------------------------------------------------------------------------
4 $Id$
5 ------------------------------------------------------------------------
7 ------------------------------------------------------------------------
8 intro
9 ------------------------------------------------------------------------
11 this is a port of james mccartney's supercollider synthesis engine
12 (scsynth) and programming language (sclang) to linux. supercollider's
13 main homepage is at and the source code can be obtained via SVN from
15    http://supercollider.sourceforge.net
17 It all started at this homepage:
19    http://www.audiosynth.com
21 to get further information on supercollider usage or development, you
22 might consider subscribing to the mailing lists
24   http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
26 ------------------------------------------------------------------------
27 build requirements
28 (most of these will be available in your linux distribution as packages )
29 ------------------------------------------------------------------------
31  * gcc >= 3.0
33    http://www.gnu.org/software/gcc/
35    gcc versions < 3.0 are missing some required c++ features
37  * jack and libjack
39    http://jackit.sourceforge.net/
41    jack audio connection kit
43  * libsndfile >= 1.0
45    http://www.mega-nerd.com/libsndfile/
47    _the_ soundfile i/o library
49  * pkg-config >= 0.14.0
51    http://www.freedesktop.org/software/pkgconfig/
53    facilitates checking for installed packages when compiling from
54    source
56  * scons >= 0.96
58    http://www.scons.org/
60    configuration and build tool based on python
62  * fftw >= 3.0
64    http://www.fftw.org/
66    fast FFT transform library (for frequency-domain analysis,
67                                         phase-vocoder effects)
69 ------------------------------------------------------------------------
70 build requirements (optional features)
71 (most of these will be available in your linux distribution as packages )
72 ------------------------------------------------------------------------
74  o alsa
76    http://www.alsa-project.org/
78    advanced linux sound architecture drivers and library, for sclang's
79    MIDI interface
81  o libhowl (obsolete)
83    http://www.porchdogsoft.com/products/howl/
85    zeroconf service dicovery implementation
87  o libavahi-client
89    http://www.avahi.org/
91    a more powerful zeroconf service discovery implementation
93  o linux kernel >= 2.6
95    http://www.kernel.org/
97    for sclang's linux input device (LID) interface
99  o for scel: the Emacs interface see the README in the directory
100    `editors/scel'
102  o for sced: the gedit interface see the README in the directory
103    `editors/sced'
105  o for scvim: the vim interface see the README in the directory
106    `editors/scvim'
109 ------------------------------------------------------------------------
110 build requirements (debian users)
111 ------------------------------------------------------------------------
113 on debian (unstable) you can install the following packages and be set
114 for building supercollider:
116    gcc
117    libjack0.100.0-dev
118    libsndfile1-dev
119    libasound2-dev
120    libavahi-client-dev
121    pkg-config
122    scons
124 ------------------------------------------------------------------------
125 building
126 ------------------------------------------------------------------------
128 building with scons is not really different from building with
129 autoconf, automake and related tools.
131    $ scons -H
133 gives an overview of scons options.
135    $ scons -h
137 lists package specific options variables and their default values.
138 (Note: some options allow to disable the dependencies on fftw and on
139 libsndfile, but those dependencies should be considered compulsory for
140 most standard setups since they provide much core sc functionality.)
142 options can be set on the command line
144    $ scons VARIABLE=VALUE
146 and are cached in a file called scache.conf (which can be edited with
147 your favorite editor) for use in the next scons invocation.
149 in order to build the whole package, call scons without arguments
150 (apart from option variables). in order to install the package, call
151 scons with the `install' target:
153    $ scons install
155 any target (including `install') can be cleaned with the `-c' option
156 to scons; note that cleaning the `install' target also removes locally
157 built files.
159 The option SCEL installs the emacs editor. For the sced and scvim editors,
160 please use the scons scripts in their respective directories (in editors/).
162 Note that the language will only build 32bit. To compile the language as
163 32bit binary on a 64bit installation, a multilib compiler and 32bit
164 libraries are required (on debian systems, the packages are gcc-multilib
165 g++-multilib, ia32-libs, libc6-dev-i386 and lib32asound2-dev).
168 ------------------------------------------------------------------------
169 Building a Debian package
170 ------------------------------------------------------------------------
172 In our SVN we have debian packaging rules. These were designed on Ubuntu
173 but we believe they should work on most common debian systems - please
174 let us know if you have any issues with this way of building:
176   cd SuperCollider3    # (or wherever your SC source is)
177   svn co https://supercollider.svn.sourceforge.net/svnroot/supercollider/packages/ubuntu/ debian
178   debuild
180 Eventually, some .deb packages will be put in the parent folder, and can
181 then be installed just like any other Debian package. For example:
183   dpkg -i ../supercollider*.deb
185 (Note: the packages supercollider-scel*.deb, supercollider-scvim*.deb,
186 supercollider-sced*.deb, represent the different editor integrations:
187 emacs, vim, gedit. You might not want to install all of those, but
188 choose your preferred editor.)
191 ------------------------------------------------------------------------
192 running scsynth (standalone)
193 ------------------------------------------------------------------------
195 run scsynth without options to get an option summary. don't forget to
196 start jackd before trying to use scsynth. if you want to add
197 directories to supercollider's search path or assign default jack
198 ports, set up your environment as described below.
200 you can specify the number of jack input/output channels created with
201 the options -i and -o, respectively.
203 the -H option can be used to specify a jack server to connect to and
204 to set the jack client identifier. the format is either
206     <SERVER-NAME>:<CLIENT-NAME>
208 or just
210     <CLIENT-NAME>
212 when connecting to the default server.
214 ------------------------------------------------------------------------
215 running sclang
216 ------------------------------------------------------------------------
218 it is recommended to use sclang in combination with the SCEL emacs
219 interface in `scel'. see the README in `linux/scel' for installation
220 and usage.
222 sclang executes the startup file `~/.sclang.sc' after class library
223 initialization. this file can contain statements you don't want to put
224 in a custom Main class, like setting default variables. an example can
225 be found in `linux/examples/sclang.sc'.
227 you _have_ to have a directory `~/share/SuperCollider/'. This is where
228 automatically a synthdefs directory is created. It is also the place
229 to put Extensions to the class library, in a folder called Extensions.
231 the runtime directory is either the current working directory or the
232 path specified with the `-d' option.
234 for advanced setups, sclang's compilation search path can be
235 customized with a library configuration file. an example is provided
236 in `linux/examples/sclang.cfg'; install it as `/etc/sclang.cfg' or
237 `~/.sclang.cfg'. This config file is only needed when you want to
238 _exclude_ directories from the class library. Otherwise (so in most cases)
239 it is not needed.
241 ------------------------------------------------------------------------
242 environment
243 ------------------------------------------------------------------------
245 the jack audio driver interface is configured based on various
246 environment variables:
248  * SC_JACK_DEFAULT_INPUTS comma separated list of jack ports that
249    scsynth's inputs should connect to by default
251    $ export SC_JACK_DEFAULT_INPUTS="system:capture_1,system:capture_2"
253    in order to connect the first ports of one jack client, it is possible
254    to specify only the client name
256    $ export SC_JACK_DEFAULT_INPUTS="system"
258  * SC_JACK_DEFAULT_OUTPUTS comma separated list of jack ports that
259    scsynth's outputs should be connected to by default.
261    $ export SC_JACK_DEFAULT_OUTPUTS="system:playback_1,system:playback_2"
263    in order to connect the first ports of one jack client, it is possible
264    to specify only the client name
266    $ export SC_JACK_DEFAULT_OUTPUTS="system"
268 two additional environment variables substitute directories for the default
269 search path for plugins and synth definitions, respectively. directory
270 names are separated by ':' as in the unix PATH variable:
272  * SC_PLUGIN_PATH, SC_SYNTHDEF_PATH
274    $ export SC_SYNTHDEF_PATH="./synthdefs:/home/sk/SuperCollider/synthdefs"
276 ------------------------------------------------------------------------
277 documentation
278 ------------------------------------------------------------------------
280 apart from the sites listed above, some more documentation links ...
282 a wiki for supercollider, set up by julian rohrhuber, is at
284     http://swiki.hfbk-hamburg.de:8888/MusicTechnology/6
286 linux specific information can be found at
288     http://swiki.hfbk-hamburg.de:8888/MusicTechnology/478
290 if and when i get around to update the site, you'll find some more at
292    http://v00d00.k-hornz.de/sc.html
294 ------------------------------------------------------------------------
295 reporting bugs
296 ------------------------------------------------------------------------
298 please report bugs either to the sc-users or sc-dev mailing lists.
300 ------------------------------------------------------------------------
301 contributors
302 ------------------------------------------------------------------------
304 stefan kersten <sk AT k-hornz DOT de>
305 andi pieper
306 maurizio umberto puxeddu
307 rohan drape
308 mario lang
309 john yates
310 nescivi (marije baalman)
312 ------------------------------------------------------------------------
313 outro
314 ------------------------------------------------------------------------
316 thanks to james mccartney, for making this great piece of audio
317 software publically and freely available.
319 ------------------------------------------------------------------------
321 ------------------------------------------------------------------------